1. Field of the Invention
The present invention relates to an information processing apparatus which performs a system boot by using a program stored in a storage device which may include a bad block(s), and requires an error detection/correction process after performing a read, e.g., a NAND type flash memory.
2. Description of the Background Art
Flash memories are generally classified into NOR types and NAND types. A NOR type flash memory has an advantage in that it is capable of accepting random access on a byte-by-byte basis, but has a disadvantage in that it is expensive and only permits a low degree of integration as compared to a NAND type flash memory. On the other hand, a NAND type flash memory is a memory which is presumed to include a certain population or less of bad blocks. Therefore, a read or write for a NAND type flash memory must be performed while keeping the positions of the bad blocks under management. Although a NAND type flash memory is disadvantageous in that it can only accept sequential access, and requires an error detection/correction process after a read is performed, a NAND type flash memory has an advantage in that it is inexpensive and permits a high degree of integration as compared to a NOR type flash memory.
The following technique has conventionally been practiced in order to execute a program which is stored in a storage device that includes bad blocks and requires an error detection/correction process after a read (hereinafter referred to as a “low-reliability memory”; e.g., a NAND type flash memory). The conventional technique not only employs a low-reliability memory, but also employs a storage device which does not include any bad blocks and does not require an error detection/correction process (hereinafter referred to as a “high-reliability memory”; e.g., a mask ROM or a NOR type flash memory). The low-reliability memory stores a main program to which error check code is assigned, whereas the high-reliability memory stores an initial program, which performs functions including transferring of the main program. A system CPU, after leaving a reset state, transfers the main program from the low-reliability memory to a RAM, in accordance with the initial program which is stored in the high-reliability memory. After the transfer of the main program is completed, the CPU's control branches out to the main program on the RAM, whereafter the main program on the RAM is executed.
Since there is no particular need to execute an initial program at a fast speed, an initial program might as well be stored in a slow storage device. Accordingly, there is also known a technique which does not employ a high-reliability memory to store an initial program, but performs a system boot by using an initial program stored in a NAND type flash memory. Such a technique is described in, for example, Japanese Laid-Open Patent Publication No. 2002-55822. According to the technique described in this publication, the initial program stored in the NAND type flash memory is transferred by a transfer circuit to a static RAM or the like at the time of power activation.
However, in the technique described in this publication, no error detection/correction process is performed when an initial program (including a bootstrap program, drivers, and the like) is transferred to a static RAM or the like. Therefore, if the initial program which has been read contains an error, system boot cannot be performed properly. Since a static RAM is more expensive than other types of storage devices, an increase in the size of the initial program leads to an increased cost of the entire system.